/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.cadastro.DAO;

import br.com.cadastro.entity.Pessoa;
import br.com.cadastro.util.HibernateUtil;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;

/**
 *
 * @author Dinarth
 */
public class PessoaDAO {

    private Session sessao;
    private Transaction trans;
    private List<Pessoa> list;

    public List<Pessoa> getList() {
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();

            Criteria cri = sessao.createCriteria(Pessoa.class);
            cri.addOrder(Order.asc("nome"));
            this.list = cri.list();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sessao.close();

        }
        return list;
    }

    public void addPessoa(Pessoa p) {
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();
            trans = sessao.beginTransaction();

            Pessoa pessoa = new Pessoa();
            pessoa.setNome(p.getNome());
            pessoa.setTelefone(p.getTelefone());
            pessoa.setEmail(p.getEmail());

            sessao.save(pessoa);
            trans.commit();

        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            sessao.close();
        }
    }

    public void removePessoa(Pessoa p) {
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();
            trans = sessao.beginTransaction();

            sessao.delete(p);
            trans.commit();

        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            sessao.close();
        }
        
    }
    
    public void updatePessoa(Pessoa p){
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();
            trans = sessao.beginTransaction();
            
            sessao.update(p);
            trans.commit();          
            
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            sessao.close();
        }
    }
    
}
